package com.auction.common.core.controller;


import com.auction.common.utils.ReturnResult;

public abstract class MyBaseController {
    protected final int SUCCESS = 200;//成功
    protected final int ERROR = 0;//失败

    /**
     * 成功方法，不需要传递数据的
     * @param msg 提示消息
     * @return
     */
    protected ReturnResult success(String msg){
        return new ReturnResult(SUCCESS,msg,null);
    }

    /**
     * 成功方法，需要传递数据
     * @param msg 提示消息
     * @param data 要传递的数据
     * @return
     */
    protected ReturnResult success(String msg,Object data){
        return new ReturnResult(SUCCESS,msg,data);
    }

    /**
     * 失败方法
     * @param msg 消息提示
     * @return
     */
    protected ReturnResult fail(String msg){
        return new ReturnResult(ERROR,msg,null);
    }

    /**
     * 失败方法
     * @param msg 消息提示
     * @param data 要传递的数据
     * @return
     */
    protected ReturnResult fail(String msg,Object data){
        return new ReturnResult(ERROR,msg,data);
    }

    /**
     * 保存成功
     * @param rs 数据库返回的数据 0|1 失败|成功
     * @return
     */

    protected ReturnResult saveResult(int rs){
        return rs==1? getReturnResult(SUCCESS,"保存成功",null):getReturnResult(ERROR,"保存失败",null);
    }
    /**
     * 修改成功
     * @param rs 数据库返回的数据 0|1 失败|成功
     * @return
     */
    protected ReturnResult updateResult(int rs){
        return rs==1? getReturnResult(SUCCESS,"修改成功",null):getReturnResult(ERROR,"修改失败",null);
    }
    /**
     * 删除成功
     * @param rs 数据库返回的数据 0|1 失败|成功
     * @return
     */
    protected ReturnResult deleteResult(int rs){
        return rs==1? getReturnResult(SUCCESS,"删除成功",null):getReturnResult(ERROR,"删除失败",null);
    }

    /**
     * 进行后端验证，不通过则抛出异常
     * @param result
     */
//    protected void validate(BindingResult result){
//        List<FieldError> fieldErrors = result.getFieldErrors();
//        if(fieldErrors.size()>0){
//            Map<String,String> errors = new HashMap<>();
//            fieldErrors.forEach(fieldError->{
//                errors.put(fieldError.getField(),fieldError.getDefaultMessage());
//            });
//            throw new ValidateException(errors);
//        }
//    }

    /**
     * 获取结果对象
     * @param code 是否成功
     * @param msg 消息提示
     * @param data 返回的数据
     * @return
     */
    private ReturnResult getReturnResult(int code,String msg,Object data){
        return new ReturnResult(code,msg,data);
    }

}
